home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / TEST / SYSUTIL2.M < prev    next >
Encoding:
Text File  |  1988-12-07  |  1.7 KB  |  79 lines

  1. MODULE T; (*$E MOS *)
  2.  
  3. (*$C-*)
  4. from terminal import WriteString, writeln, write, writepg, read;
  5. FROM SYSTEM IMPORT ADDRESS, ADR, TSIZE, BYTE, WORD, LONGWORD, VAL;
  6. from strconv import lhextostr, hextostr;
  7. import sysutil2;
  8.  
  9. var ad: ADDRESS;
  10.     ch, c: char;
  11.     b: byte;
  12.  
  13. PROCEDURE fehler (s: ARRAY OF CHAR): BOOLEAN;
  14.   BEGIN
  15.     writeln;
  16.     WriteString (s);
  17.     WriteString (' (Y/N) ? ');
  18.     read (ch);
  19.     writeln;
  20.     RETURN cap (ch) = 'Y'
  21.   END fehler;
  22.  
  23. PROCEDURE zeige (s: Array of char);
  24.   BEGIN
  25.     WriteString (s);
  26.     writeln;
  27.   END zeige;
  28.  
  29. VAR ljbuf1: SysUtil2.JumpBuf;
  30.  
  31. PROCEDURE zwei;
  32.  
  33.   PROCEDURE lokal;
  34.     BEGIN
  35.        IF fehler ('lokal') THEN SysUtil2.LongJump (ljbuf1, 1) END;
  36.     END lokal;
  37.  
  38.   BEGIN (* von 'zwei' *)
  39.     lokal;
  40.     IF fehler ('zwei') THEN SysUtil2.LongJump (ljbuf1, 2) END;
  41.   END zwei;
  42.  
  43. PROCEDURE haupt;
  44.   BEGIN
  45.     CASE SysUtil2.SetJump (ljbuf1) OF
  46.       0: (* Label wurde deklariert -> 'zwei' aufrufen: *)
  47.          zwei;
  48.          (* 'zwei' kehrte ohne Fehler zurück *)
  49.          zeige ('Kein Fehler.')
  50.     | 1: zeige ('Fehler in Prozedur "lokal" !')
  51.     | 2: zeige ('Fehler in Prozedur "zwei" !')
  52.     END;
  53.   END haupt;
  54.  
  55. var svm: SysUtil2.ModeBuf;
  56.     sysbase [$4f2]: ADDRESS;
  57.  
  58. BEGIN
  59.   writepg;
  60.   haupt;
  61.   haupt;
  62.   haupt;
  63.   haupt;
  64.   writeln;
  65.   sysutil2.supervisormode (svm);
  66.   WriteString ('OS-Base: ');
  67.   WriteString (lhextoStr (sysbase,0));
  68.   sysutil2.usermode (svm);
  69.   writeln;
  70.   WriteString ('3 = ');
  71.   WriteString (hextoStr (sysutil2.irmask(),0));
  72.   writeln;
  73.   sysutil2.setirmask(2);
  74.   WriteString ('2 = ');
  75.   WriteString (hextoStr (sysutil2.irmask(),0));
  76.   writeln;
  77.   read (c)
  78. END T.